home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
et
/
et3_0-a1.lha
/
et3
/
src
/
Symbol.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-04-27
|
1KB
|
60 lines
#ifndef Symbol_First
#ifdef __GNUG__
//pragma once
#pragma interface
#endif
#define Symbol_First
#include "Object.h"
class SymbolTable: public Object {
static char **table;
public:
MetaDef(SymbolTable);
SymbolTable();
~SymbolTable();
static u_int Lookup(char *name);
static u_int MakeId(char *name);
};
class Symbol {
u_int id;
public:
Symbol()
{ id= 0; }
Symbol(char *name)
{ id= SymbolTable::MakeId(name); }
Symbol(const Symbol &at)
{ id= at.id; }
void operator=(const Symbol &at)
{ id= at.id; }
u_int Id()
{ return id; }
char *AsString()
{ return (char*) id; }
OStream& PrintOn(OStream &s)
{ return s << AsString() SP; }
IStream& ReadFrom(IStream&);
friend bool operator== (Symbol a1, Symbol a2)
{ return (bool) (a1.id == a2.id); }
friend bool operator!= (Symbol a1, Symbol a2)
{ return (bool) (a1.id != a2.id); }
friend OStream& operator<< (OStream &s, Symbol &a)
{ return a.PrintOn(s); }
friend IStream& operator>> (IStream &s, Symbol &a)
{ return a.ReadFrom(s); }
};
SimpleMetaDef(Symbol);
#endif